package entidades;

import java.sql.Connection;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.LinkedList;

public class AnteojosEntity {

	public static String armazonesStatic[] = { " ","Metal", "Metal con Zilo",
			"Metal ranurado", "Metal sol", "Montado al aire", "Plastico",
			"Plastico ranurado", "Plastico sol", "Zilo", "Zilo ranurado", };

	public static String tipoStatic[] = { "Cerca", "Intermedia","Lejos", "Bifocal",
			"Multifocal" };
	public static String formaPagoStatic[] = { " ", "Efectivo", "Tarjeta"};
	
	private int id = 0;
	private int cliente;
	private Date fechaPedido;
	private String tipo;
	private String oDEsf;
	private String oDCil;
	private String oDGrado;
	private String oIEsf;
	private String oICil;
	private String oIGrado;
	private String lente;
	private String armazon;
	private double precioTotal;
	private double precioTratamiento;
	private double precioArmazon;
	private double precioLente;
	private String descripcionArmazon;
	private String doctor;
	private String formaPago;
	

	private String observaciones;

	public Date getFechaPedido() {
		return fechaPedido;
	}

	public void setFechaPedido(Date fechaPedido) {
		this.fechaPedido = fechaPedido;
	}

	public String getObservaciones() {
		return observaciones;
	}

	public void setObservaciones(String observaciones) {
		this.observaciones = observaciones;
	}

	

	public int save() {
		Connection con = Conexiones.getConexionMySQL();
		String query = "";

		if (id == 0) {
			query = "insert into anteojos(cliente,fecha_pedido,od_esf, od_cil,od_grado,"
					+ "oi_esf,oi_cil,oi_grado,lente,armazon,observaciones,tipo,precio_lente," +
							"precio_tratamiento,precio_armazon,precio_total,descripcion_armazon,doctor,forma_pago) values"
					+ "       ("
					+ this.getCliente()
					+ ",'"
					+ this.getFechaPedido()
					+ "','"
					+ this.getODEsf()
					+ "','"
					+ this.getODCil()
					+ "','"
					+ this.getODGrado()
					+ "','"
					+ this.getOIEsf()
					+ "','"
					+ this.getOICil()
					+ "','"
					+ this.getOIGrado()
					+ "','"
					+ this.getLente()
					+ "','"
					+ this.getArmazon()
					+ "','"
					+ this.getObservaciones()
					+ "','"
					+ this.getTipo() 
					+"', "
					+ this.getPrecioLente()
					+ ","
					+ this.getPrecioTratamiento()
					+ ","
					+ this.getPrecioArmazon()
					+ ","
					+ this.getPrecioTotal()
					+ ",'"
					+ this.getDescripcionArmazon()
					+ "','"
					+ this.getDoctor()
					+ "','"
					+ this.getFormaPago()
					+ "')";
		} else {
			query = "update anteojos set " + 
			"fecha_pedido = '" + this.getFechaPedido() + "'," + 
			"od_esf = '" + this.getODEsf() + "'," +
			"od_cil = '" + this.getODCil() + "'," +
			"od_grado = '" + this.getODGrado() + "'," +
			"oi_esf = '" + this.getOIEsf() + "'," +
			"oi_cil= '" + this.getOICil() + "'," +
			"oi_grado= '" + this.getOIGrado() + "'," +
			"lente = '" + this.getLente()+ "'," +
			"armazon = '" + this.getArmazon() + "'," +
			"oi_cil= '" + this.getOICil() + "'," +
			"oi_grado= '" + this.getOIGrado() + "'," +
			"lente = '" + this.getLente()+ "'," +
			"observaciones = '" + this.getObservaciones() + "'," +
			"tipo= '" + this.getTipo()+ "'," +
			"precio_lente= " + this.getPrecioLente() + "," +
			"precio_tratamiento= " + this.getPrecioTratamiento() + "," +
			"precio_armazon= " + this.getPrecioArmazon()+ "," +
			"precio_total= " + this.getPrecioTotal() + "," +
			"descripcion_armazon = '" + this.getDescripcionArmazon()+ "'," +
			"doctor = '" + this.getDoctor()+ "'," +
			"forma_pago = '" + this.getFormaPago() + "'" +
					"where id = " + this.getId(); 
			

		}
		try {
			Statement stm = con.createStatement();
			stm.executeUpdate(query);
			if (id == 0) {
				ResultSet rs = (stm
						.executeQuery("select max(id)as ID from anteojos"));
				rs.next();
				id = rs.getInt("ID");
			}
			stm.close();
			con.close();

		} catch (SQLException e) {
			System.out.println("Error en cliente entity");
			e.printStackTrace();
		}
		return id;
	}

	

	public String getTipo() {
		return tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	public String getODEsf() {
		return oDEsf;
	}

	public void setODEsf(String esf) {
		oDEsf = esf;
	}

	public String getOIEsf() {
		return oIEsf;
	}

	public void setOIEsf(String esf) {
		oIEsf = esf;
	}

	public String getODCil() {
		return oDCil;
	}

	public void setODCil(String cil) {
		oDCil = cil;
	}

	public String getOICil() {
		return oICil;
	}

	public void setOICil(String cil) {
		oICil = cil;
	}

	public String getODGrado() {
		return oDGrado;
	}

	public void setODGrado(String grado) {
		oDGrado = grado;
	}

	public String getOIGrado() {
		return oIGrado;
	}

	public void setOIGrado(String grado) {
		oIGrado = grado;
	}

	public String getLente() {
		return lente;
	}

	public void setLente(String lente) {
		this.lente = lente;
	}

	public String getArmazon() {
		return armazon;
	}

	public void setArmazon(String armazon) {
		this.armazon = armazon;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public int getCliente() {
		return cliente;
	}

	public void setCliente(int cliente) {
		this.cliente = cliente;
	}

	public static LinkedList<AnteojosEntity> getAnteojos(int id) {
		Connection con = Conexiones.getConexionMySQL();
		Statement stm;
		LinkedList<AnteojosEntity> lista = new LinkedList<AnteojosEntity>();
		AnteojosEntity anteojo = new AnteojosEntity();

		try {
			stm = con.createStatement();
			ResultSet rs = stm
					.executeQuery("select * from anteojos where cliente = "
							+ id + " order by id desc");

			while (rs.next()) {
				anteojo = new AnteojosEntity();
				anteojo.setId(rs.getInt("id"));
				anteojo.setCliente(rs.getInt("cliente"));
				anteojo.setTipo(rs.getString("tipo"));
				anteojo.setODEsf(rs.getString("od_esf"));
				anteojo.setODCil(rs.getString("od_cil"));
				anteojo.setODGrado(rs.getString("od_grado"));
				anteojo.setOIEsf(rs.getString("oi_esf"));
				anteojo.setOICil(rs.getString("oi_cil"));
				anteojo.setOIGrado(rs.getString("oi_grado"));
				anteojo.setLente(rs.getString("lente"));
				anteojo.setArmazon(rs.getString("armazon"));
				anteojo.setDescripcionArmazon(rs.getString("descripcion_armazon"));
				anteojo.setFechaPedido(rs.getDate("fecha_pedido"));
				anteojo.setObservaciones(rs.getString("observaciones"));
				anteojo.setPrecioArmazon(Double.parseDouble(rs.getString("precio_armazon")));
				anteojo.setPrecioLente(Double.parseDouble(rs.getString("precio_lente")));
				anteojo.setPrecioTratamiento(Double.parseDouble(rs.getString("precio_tratamiento")));
				anteojo.setPrecioTotal(Double.parseDouble(rs.getString("precio_total")));
				anteojo.setDoctor(rs.getString("doctor"));
				anteojo.setFormaPago(rs.getString("forma_pago"));
				lista.add(anteojo);
			}
			con.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return lista;
	}

	public static void eliminarAnteojo(int numeroAnteojo, boolean multifocal){
		Connection con = Conexiones.getConexionMySQL();
		Statement stm;
		try {
			stm = con.createStatement();
			stm.executeUpdate("delete from anteojos where id = " + numeroAnteojo);
			if(multifocal){
			stm.executeUpdate("delete from multifocales where anteojo_id = " + numeroAnteojo);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	public void eliminarAnteojo(){
		eliminarAnteojo(getId(), (getTipo().equalsIgnoreCase("bicocal") || getTipo().equalsIgnoreCase("multifocal")) ? true : false);
	}
	
	@Override
	public String toString() {

		return getId() + " " + getCliente() + " " + getODEsf() + " "
				+ getODCil() + " " + getODGrado() + " " + getOIEsf() + " "
				+ getOICil() + " " + getOIGrado();
	}

	public String getDescripcionArmazon() {
		return descripcionArmazon;
	}

	public void setDescripcionArmazon(String descripcionArmazon) {
		this.descripcionArmazon = descripcionArmazon;
	}

	public String getDoctor() {
		return doctor;
	}

	public void setDoctor(String doctor) {
		this.doctor = doctor;
	}

	public double getPrecioArmazon() {
		return precioArmazon;
	}

	public void setPrecioArmazon(double precioArmazon) {
		this.precioArmazon = precioArmazon;
	}

	public double getPrecioLente() {
		return precioLente;
	}

	public void setPrecioLente(double precioLente) {
		this.precioLente = precioLente;
	}

	public double getPrecioTotal() {
		return precioTotal;
	}

	public void setPrecioTotal(double precioTotal) {
		this.precioTotal = precioTotal;
	}

	public double getPrecioTratamiento() {
		return precioTratamiento;
	}

	public void setPrecioTratamiento(double precioTratamiento) {
		this.precioTratamiento = precioTratamiento;
	}

	public String getFormaPago() {
		return formaPago;
	}

	public void setFormaPago(String formaPago) {
		this.formaPago = formaPago;
	}

}
